package com.laoli.lab37;

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.CompletableFuture;

/**
 * CompletableFuture示例1-无返回值的异步操作且使用默认线程池
 */
public class CompletableFutureDemo01 {
    /**
     * 主线程的任务
     */
    private static void mainTask() {
        // 每隔1秒一次，连续5次输出信息
        for (int i = 1; i <= 5; i++) {
            try {
                System.out.printf("【主线程】执行任务%d：%s\n", i,
                        LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }

    /**
     * main方法
     */
    public static void main(String[] args) {
        // 主线程执行任务-1
        mainTask();
        // 子线程执行任务
        CompletableFuture.runAsync(()->{
            System.out.printf("\t【子线程】开始耗时任务：%s\n",
                    LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
            try {
                Thread.sleep(3000); // 模拟耗时操作（如数据库查询、网络请求）
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.printf("\t【子线程】结束耗时任务：%s\n",
                    LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
        });
        // 主线程执行任务-2
        mainTask();
    }
}
